package com.flame.user.service;

import com.flame.user.controller.vo.ObjAuthMaintainVo;
import com.flame.user.controller.vo.ObjAuthVo;
import com.flame.user.entity.ObjAuth;
import com.flame.user.mapper.ObjAuthMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * flame_obj_auth 对象权限表
 *
 * @author 吴欣童
 * @since 2022-12-26 15:40:05
 */
@Service
public class ObjAuthService {

    @Autowired
    private ObjAuthMapper objAuthMapper;

    public List<ObjAuth> pageObjAuth(ObjAuthVo objAuthVo) {
        return objAuthMapper.page(objAuthVo);
    }

    public void addObjAuth(ObjAuthMaintainVo objAuthMaintainVo) {
        objAuthMapper.deleteByObjIdAndObjType(objAuthMaintainVo.getObjId(), objAuthMaintainVo.getObjType());
        if (!CollectionUtils.isEmpty(objAuthMaintainVo.getPermIdList())) {
            for (String permId : objAuthMaintainVo.getPermIdList()) {
                ObjAuth objAuth = new ObjAuth();
                objAuth.setObjId(objAuthMaintainVo.getObjId());
                objAuth.setObjType(objAuthMaintainVo.getObjType());
                objAuth.setPermId(permId);
                ObjAuth dbObjAuth =
                        objAuthMapper.selectById(objAuthMaintainVo.getObjId(), objAuthMaintainVo.getObjType(), permId);
                if (dbObjAuth == null) {
                    objAuthMapper.insert(objAuth);
                }
            }
        }
    }

    public void updateObjAuth(ObjAuth objAuth) {
        objAuthMapper.updateById(objAuth);
    }

    public void deleteObjAuth(ObjAuth objAuth) {
        objAuthMapper.deleteById(objAuth.getObjId(), objAuth.getPermId(), objAuth.getObjType());
    }
}
